# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer:
pkgname=flow
pkgver=0.78.0
pkgrel=1
pkgdesc="A static typechecker for JavaScript"
url="https://flow.org"
# x86, armhf, s390x, mips, mips64: limited by ocaml aport
arch="all !x86 !armhf !armv7 !s390x !mips !mips64"
license="MIT"
checkdepends="bash diffutils nodejs yarn"
makedepends="
	js_of_ocaml
	linux-headers
	ocaml
	ocaml-compiler-libs
	ocaml-dtoa-dev
	ocaml-findlib
	ocaml-gen-dev
	ocaml-lwt-dev
	ocaml-lwt_log-dev
	ocaml-lwt_ppx-dev
	ocaml-ppx_deriving-dev
	ocaml-ppx_gen_rec-dev
	ocaml-result-dev
	ocaml-sedlex-dev
	ocaml-wtf8-dev
	ocamlbuild
	opam
	zip
	"
subpackages="libflowparser-dev:_parser"
source="https://github.com/facebook/$pkgname/archive/v$pkgver/$pkgname-$pkgver.tar.gz
	makefile-tag-thread.patch
	"
builddir="$srcdir/$pkgname-$pkgver"

prepare() {
	default_prepare
	cd "$builddir"

	msg "Installing JS packages needed for running tests..."
	yarn install \
		--ignore-scripts \
		--frozen-lockfile \
		--non-interactive \
		--cache-folder "$srcdir"/.yarn
}

build() {
	cd "$builddir"

	rm -Rf _build

	make FLOW_RELEASE=1
	mkdir dist
	cp -a bin dist/

	make -C src/parser js
	make -C src/parser dist/libflowparser.zip
	cp -ar src/parser/dist/libflowparser dist/
}

check() {
	cd "$builddir"
	make do-test FLOW_RELEASE=1
}

package() {
	cd "$builddir"

	install -m 755 -D dist/bin/flow "$pkgdir"/usr/bin/flow
}

_parser() {
	pkgdesc="The Flow Parser"

	cd "$builddir"

	mkdir -p "$subpkgdir"/usr
	cp -r dist/libflowparser/* "$subpkgdir"/usr/
}

sha512sums="033052634fcd3f55babe333d446e4c1ef6ae78509670cf8b68cd1f4bfa8f24ff1a965d8a4a5ec5f55c2774632d1c5145a22f745c268aafa7a6b8199827237a80  flow-0.78.0.tar.gz
d300dec1b7925fbba691701e10f68727ef20c06430eab8f746aeebe5ba591569f3430fdc9a8a69815860ab9fc6cf5795a7a509e752922685778d9fa6ae7ca7c2  makefile-tag-thread.patch"
